home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _007926CBCAA04FC79B5255125559611F < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.2 KB  |  45 lines

  1. // ===============================================================
  2. // Fragment Program: Indoor water volume using reflection cube map
  3. // Description: used for indoor water volumes
  4. // Last Update: 19/10/2003
  5. // Coder: Tiago Sousa
  6. // ===============================================================
  7.  
  8. #include "../CGVPMacro.csi"
  9.  
  10. MainInput 
  11.   uniform sampler2D bumpMap : texunit0,
  12.   uniform samplerCUBE envMap : texunit3,
  13.   uniform float4 Ambient,
  14.   uniform float4 WaterColor
  15. }
  16.  
  17. DeclarationsScript
  18. {
  19.   OUT_T0_T1_T2_T3_C0
  20.   FOUT
  21. }
  22.  
  23. CoreScript
  24. {
  25.   // load the decal
  26.   float4 bumpNormal = tex2D(bumpMap, IN.Tex0.xy);
  27.  
  28. #ifdef PROFILE_PS_1_1        
  29.   float4 env = texCUBE_reflect_dp3x3(envMap, IN.Tex3, IN.Tex1, IN.Tex2, bumpNormal);
  30. #endif
  31.  
  32. #ifdef OTHER
  33.   float3 E = float3(IN.Tex1.w, IN.Tex2.w, IN.Tex3.w);
  34.   float3 N = float3(dot(IN.Tex1.xyz, bumpNormal.xyz),
  35.                     dot(IN.Tex2.xyz, bumpNormal.xyz),
  36.                     dot(IN.Tex3.xyz, bumpNormal.xyz));
  37.   float3 env = texCUBE(envMap, 2*(dot(N, E)/dot(N, N))*N - E);
  38. #endif        
  39.  
  40.   OUT.Color.xyz = env.xyz * IN.Color.xyz*WaterColor.xyz+WaterColor.xyz*0.2;
  41.   OUT.Color.a = IN.Color.a * WaterColor.a;
  42. }
  43.  
  44.